import { endsWith } from "lodash";


/**
 * 获取所有页面组件
 * 页面的标识是：index.vue,其他的都不算页面
 * @returns
 */
const getPageComponents = () => {
  // 获取组件名称，也就是componentMap 的 key，这个名称我这个做的比较简陋，只是取文件夹名称而已，有一定的冲突风险
  // 后续可以根据路径作为名称，这样就可以避免上面说的问题
  const getComponentName = (name: string) => {
    if (endsWith(name, "index.vue")) {
      return name.replace('../views', '').replace('/index.vue', '');
    }
  };

  // 定义一个组件对象，后续作为返回值使用
  const componentMap: { [key: string]: () => Promise<any> } = {};

  // ../pages/*/*.vue：不深层次获取文件夹
  const components = import.meta.glob("../views/**/index.vue");

  // 循环，将所有页面组件放入对象中
  for (const key in components) {
    const component = components[key];
    const componentName = getComponentName(key);
    if (componentName) {
      componentMap[componentName] = component;
    }
  }
  // 这里打印一下，后续配置路由，需要这里的key
  console.log("页面组件信息：" ,componentMap);
  return componentMap;
};

// 所有页面路由数据
export const componentMap = getPageComponents();


